前端面试题:JS中的let和var的区别 | 您所在的位置:网站首页 › js中let in › 前端面试题:JS中的let和var的区别 |
最近很多前端的朋友去面试被问到let和var的区别,其实阮一峰老师的ES6中已经很详细介绍了let的用法和var的区别。我简单总结一下,以便各位以后面试中使用。 ES6 新增了let命令,用来声明局部变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。 先看个var的常见变量提升的面试题目: 题目1: var a = 99; // 全局变量a f(); // f是函数,虽然定义在调用的后面,但是函数声明会提升到作用域的顶部。 console.log(a); // a=>99, 此时是全局变量的a function f() { console.log(a); // 当前的a变量是下面变量a声明提升后,默认值undefined var a = 10; console.log(a); // a => 10 } // 输出结果: undefined 10 99如果以上题目有理解困难的童鞋,请系统的看一下老马的免费JS高级视频教程。 ES6可以用let定义块级作用域变量在ES6之前,我们都是用var来声明变量,而且JS只有函数作用域和全局作用域,没有块级作用域,所以{}限定不了var声明变量的访问范围。例如: { var i = 9; } console.log(i); // 9ES6新增的let,可以声明块级作用域的变量。 { let i = 9; // i变量只在 花括号内有效!!! } console.log(i); // Uncaught ReferenceError: i is not defined let 配合for循环的独特应用let非常适合用于 for循环内部的块级作用域。JS中的for循环体比较特殊,每次执行都是一个全新的独立的块作用域,用let声明的变量传入到 for循环体的作用域后,不会发生改变,不受外界的影响。看一个常见的面试题目: for (var i = 0; i |
CopyRight 2018-2019 实验室设备网 版权所有 |